package com.rybbaby.tss.platform.sysFileDistributedHistory.entity;

import com.rybbaby.tss.core.utils.StringUtils;
import com.rybbaby.tss.platform.sysFileServer.entity.SysFileServer;
import com.rybbaby.tss.platform.sysFiles.entity.SysFiles;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;

/**
 * @description 文件分发记录
 * 
 * @author 谢进伟
 * 
 * @createDate 2016-11-23 下午11:09:21
 */
@Entity
@Table(name = "sys_file_distributed_history")
@DynamicUpdate(true)
@DynamicInsert(true)
public class SysFileDistributedHistory implements Serializable {
	
	private static final long serialVersionUID = 52869885411370L;
	
	/** 主键id **/
	private String id;
	/** 文件服务器id **/
	private String fileServerId;
	/** 文件id **/
	private String fileId;
	/** 状态(0:待分发,1:分发成功,2:分发失败) **/
	private Integer status;
	/** 创建时间 **/
	private java.sql.Timestamp createTime;
	/** 最后一次分发时间 **/
	private java.sql.Timestamp lastDistributedTime;
	/** 文件服务器id **/
	private SysFileServer fileServer;
	/** 文件id **/
	private SysFiles file;
	
	/**
	 * 方法: 取得文件服务器id
	 *
	 * @return SysFileServer 文件服务器id
	 */
	@JoinColumn(name = "fileServerId" , insertable = false , updatable = false)
	@ManyToOne(fetch = FetchType.LAZY , targetEntity = SysFileServer.class)
	public SysFileServer getFileServer() {
		return this.fileServer;
	}
	
	/**
	 * 方法: 设置文件服务器id
	 *
	 * @param fileServer 文件服务器id
	 */
	public void setFileServer(SysFileServer fileServer) {
		this.fileServer = fileServer;
	}
	
	/**
	 * 方法: 取得文件id
	 *
	 * @return SysFiles 文件id
	 */
	@JoinColumn(name = "fileId" , insertable = false , updatable = false)
	@ManyToOne(fetch = FetchType.LAZY , targetEntity = SysFiles.class)
	public SysFiles getFile() {
		return this.file;
	}
	
	/**
	 * 方法: 设置文件id
	 *
	 * @param file 文件id
	 */
	public void setFile(SysFiles file) {
		this.file = file;
	}
	
	/**
	 * 方法: 取得主键id
	 *
	 * @return java.lang.String 主键id
	 */
	@Id
	@GeneratedValue(generator = "sys_file_distributed_historyIDGenerator" , strategy = GenerationType.AUTO)
	@GenericGenerator(name = "sys_file_distributed_historyIDGenerator" , strategy = "uuid")
	@Column(name = "id", nullable= false, length = 32)
	public String getId() {
		return this.id;
	}
	
	/**
	 * 方法: 设置主键id
	 *
	 * @param id 主键id
	 */
	public void setId(String id) {
		this.id = id;
	}
	
	/**
	 * 方法: 取得文件服务器id
	 *
	 * @return java.lang.String 文件服务器id
	 */
	@Column(name = "fileServerId", nullable= true, length = 32)
	public String getFileServerId() {
		return this.fileServerId;
	}
	
	/**
	 * 方法: 设置文件服务器id
	 *
	 * @param fileServerId 文件服务器id
	 */
	public void setFileServerId(String fileServerId) {
		this.fileServerId = StringUtils.isBlank(fileServerId) ? null : fileServerId;
	}
	
	/**
	 * 方法: 取得文件id
	 *
	 * @return java.lang.String 文件id
	 */
	@Column(name = "fileId", nullable= true, length = 32)
	public String getFileId() {
		return this.fileId;
	}
	
	/**
	 * 方法: 设置文件id
	 *
	 * @param fileId 文件id
	 */
	public void setFileId(String fileId) {
		this.fileId = StringUtils.isBlank(fileId) ? null : fileId;
	}
	
	/**
	 * 方法: 取得状态(0:待分发,1:分发成功,2:分发失败)
	 *
	 * @return java.lang.Integer 状态(0:待分发,1:分发成功,2:分发失败)
	 */
	@Column(name = "status", nullable= true, length = 11)
	public Integer getStatus() {
		return this.status;
	}
	
	/**
	 * 方法: 设置状态(0:待分发,1:分发成功,2:分发失败)
	 *
	 * @param status 状态(0:待分发,1:分发成功,2:分发失败)
	 */
	public void setStatus(Integer status) {
		this.status = status;
	}
	
	/**
	 * 方法: 取得创建时间
	 *
	 * @return java.sql.Timestamp 创建时间
	 */
	@Column(name = "createTime", nullable= true, length = 19)
	public java.sql.Timestamp getCreateTime() {
		return this.createTime;
	}
	
	/**
	 * 方法: 设置创建时间
	 *
	 * @param createTime 创建时间
	 */
	public void setCreateTime(java.sql.Timestamp createTime) {
		this.createTime = createTime;
	}
	
	/**
	 * 方法: 取得最后一次分发时间
	 *
	 * @return java.sql.Timestamp 最后一次分发时间
	 */
	@Column(name = "lastDistributedTime", nullable= true, length = 19)
	public java.sql.Timestamp getLastDistributedTime() {
		return this.lastDistributedTime;
	}
	
	/**
	 * 方法: 设置最后一次分发时间
	 *
	 * @param lastDistributedTime 最后一次分发时间
	 */
	public void setLastDistributedTime(java.sql.Timestamp lastDistributedTime) {
		this.lastDistributedTime = lastDistributedTime;
	}
}